import pytest
import os
import time
from utils.email_utils import email_utils
from utils.logger_utils import logger


def run_tests():
    # 创建报告目录
    reports_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'reports')
    if not os.path.exists(reports_dir):
        os.makedirs(reports_dir)

    # 生成报告文件名
    timestamp = time.strftime("%Y%m%d_%H%M%S")
    report_file = os.path.join(reports_dir, f'report_{timestamp}.html')

    # 执行测试
    logger.info("开始执行测试...")
    pytest_args = [
        '-s',  # 显示标准输出
        '-v',  # 详细输出
        '--html=' + report_file,  # 生成HTML报告
        '--self-contained-html',  # 使报告文件包含所有资源
        'cases/'  # 测试用例目录
    ]

    exit_code = pytest.main(pytest_args)
    logger.info(f"测试执行完毕，退出码: {exit_code}")

    # 发送邮件
    if exit_code in [0, 1]:  # 0: 所有测试通过; 1: 部分测试失败
        subject = f"UI自动化测试报告 - {timestamp}"
        content = f"""
        <html>
            <body>
                <h3>UI自动化测试已完成</h3>
                <p>测试结果: {exit_code} (0: 所有测试通过; 1: 部分测试失败)</p>
                <p>详细报告请查看附件</p>
            </body>
        </html>
        """
        # 邮件功能暂时不用，可以注释了
        # email_utils.send_email(subject, content, report_file)
    else:
        logger.warning("测试执行异常，不发送邮件")

    return exit_code


if __name__ == "__main__":
    exit(run_tests())
